<?php
/**
 * @author Vitaly
 * @Date: 24.04.12
 */

/*
 * Контроллер главной страницы
 * показывает сообщения (возможна филтрация по тегу или автору)
 * выдает в свою view массив со всеми необходимыми для отображения данными
 */

class IndexActionController extends ActionController
{
    // выполняется при каждом обращении к контроллеру
    // логинит юзера и добавляет во view его модель (удобно для отрисовки страницы)

    function before()
    {
        if(isSet($_SESSION['userid']))
        {
            $userMapper = new UserMapper();
            $this->view->user = $userMapper->find($_SESSION['userid']);
        }
    }

    function action()
    {
        $userMapper = new UserMapper();
        $msgMapper = new MessageMapper();
        $commentMapper = new CommentMapper();

        // выбор показываемых сообщений
        // можно отфильтровать по id тега "tag" или id автора "author"

        if(!empty($this->args['author']))
            $allMessages = $msgMapper->getMessagesByAuthor((int)$this->args['author']);
        elseif(!empty($this->args['tag']))
            $allMessages = $msgMapper->getMessagesByTag((int)$this->args['tag']);
        else
            $allMessages = $msgMapper->selectAll();

        // создаем массив $posts со всеми данными, которые могут потребоваться для вывода во view

        $posts = array(); // массив постов

        foreach($allMessages as $message)
        {
            $allcomments = array();
            $comments = $commentMapper->getAllComments($message['id']);
            if($comments != false)
            {
                foreach($comments as $comment)
                {
                    $allcomments[] = array(
                        "author" => $userMapper->find($comment['author']),
                        "text"   => $comment['text']
                    );
                }
            }

            $tags = $msgMapper->getTagsByMessage($message['id']);

            $posts[] = array(
                'author'   => $userMapper->find($message['author']),
                'message'  => $message,
                'tags'     => $tags,
                'comments' => $allcomments
            );
        }

        // отлично, posts создан и теперь можно все что необходимо найти в нем!)

        $this->view->setTitle('LittleBlog');
        $this->view->setStructure('index');
        $this->view->posts = $posts;
        $this->view->draw();
    }
}
